<?php
/**
 * blXsltFile
 *
 * @version: 2.2
 * @date: 2008-12-04
 * @author: Vladimir Romanovich <ibnteo@gmail.com>
 * @license: GPL2
 */
class blXsltFile
{
    private $bl_xslt;

    public function __construct($bl_xslt)
    {
        $this->bl_xslt = $bl_xslt;
    }

    /**
     * Копирование файла
     */
    public function xbl_file_copy()
    {
        $this->bl_xslt->set_document_pi();

        $file_item = $this->bl_xslt->element_pi_next;
        $file_to = $this->bl_xslt->get_path($file_item->getAttribute('to'));
        if (! is_dir(dirname($file_to)))
        {
            mkdir(dirname($file_to), 0777, true);
        }
        $is_file = file_exists($file_to);
        $file_from = $this->bl_xslt->get_path($file_item->getAttribute('from'), $file_item->getAttribute('from-absolute') === 'yes');
        $copy_result = copy($file_from, $file_to);
        $chmod_result = true;
        if ($copy_result && ! $is_file)
        {
            $chmod_result = chmod($file_to, 0666);
        }
        $file_result = ($copy_result and $chmod_result) ? 'true' : 'false';
        $file_item->setAttribute('result', $file_result);
    }

    /**
     * Перемещение файла
     */
    public function xbl_file_rename()
    {
        $this->bl_xslt->set_document_pi();

        $file_item = $this->bl_xslt->element_pi_next;
        $file_to = $this->bl_xslt->get_path($file_item->getAttribute('to'));
        if (! is_dir(dirname($file_to)))
        {
            mkdir(dirname($file_to), 0777, true);
        }
        $file_from = $this->bl_xslt->get_path($file_item->getAttribute('from'), $file_item->getAttribute('from-absolute') === 'yes');
        $file_result = rename($file_from, $file_to) ? 'true' : 'false';
        $file_item->setAttribute('result', $file_result);
    }

    /**
     * Удаление фала
     */
    public function xbl_file_delete()
    {
        $this->bl_xslt->set_document_pi();

        $file_item = $this->bl_xslt->element_pi_next;
        $file_result = unlink($this->bl_xslt->get_path($file_item->getAttribute('from'))) ? 'true' : 'false';
        $file_item->setAttribute('result', $file_result);
    }

    /**
     * Информация о файле
     */
    public function xbl_file_info()
    {
        $this->bl_xslt->set_document_pi();

        $file_item = $this->bl_xslt->element_pi_next;
        $path = $this->bl_xslt->get_path($file_item->getAttribute('path'));
        $file_name = $file_item->getAttribute('name');
        if (file_exists($path.$file_name))
        {
            $file_item->setAttribute('size', filesize($path.$file_name));
            $file_item->setAttribute('time', date('c', filemtime($path.$file_name)));
        }
    }

} // End blXsltFile
